package com.cplatform.spring;

import com.cplatform.spring.aop.service.MyService;
import com.cplatform.spring.bean.Students;
import org.springframework.beans.factory.support.BeanDefinitionReader;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;

public class SpringClient2 {
    public static void main(String[] args) {
        //1.将bean的定义声明在Spring配置文件中，需要通过Spring抽象出各种Resource来指定对应的配置文件
        Resource resource = new ClassPathResource("applicationContext2.xml");
        //2.显式声明Spring工厂，该工厂用来掌控我们在配置文件中声明的各种bean以及bean之前的依赖于注入关系
        DefaultListableBeanFactory defaultListableBeanFactory = new DefaultListableBeanFactory();
        //3.定义个配置信息读取器，读取我们声明的配置文件信息，并将读取器与工厂以及资源对象进行关联
        BeanDefinitionReader beanDefinitionReader = new XmlBeanDefinitionReader(defaultListableBeanFactory);
        //4.将读取后的信息装配到之前所声明的工厂当中
        beanDefinitionReader.loadBeanDefinitions(resource);
        //5.工厂所管理的全部对象装配完毕，可以供客户端直接使用，获取各种bean对象
        MyService myService  = (MyService) defaultListableBeanFactory.getBean("myAOP");
        myService.test();
    }
}
